package IC.AST;

import IC.AST.nodes.*;

/** 
 * A visitor for AST nodes.
 */
public interface Visitor {

	public Object visit(ArrayType that);
	public Object visit(ClassDecl that);
	public Object visit(FieldsDecl that);
	public Object visit(MethodDecl that);
	public Object visit(ClassType that);
	public Object visit(FormalDecl that);
	public Object visit(PrimitiveType that);
	public Object visit(ArrayElmVar that);
	public Object visit(BinaryExpr that);
	public Object visit(BoolLiteral that);
	public Object visit(StaticCall that);
	public Object visit(VirtualCall that);
	public Object visit(IntLiteral that);
	public Object visit(LengthExpr that);
	public Object visit(SimpleVar that);
	public Object visit(MemberVar that);
	public Object visit(NewArrayExpr that);
	public Object visit(NewClassExpr that);
	public Object visit(NullLiteral that);
	public Object visit(StringLiteral that);
	public Object visit(ThisExpr that);
	public Object visit(UnaryExpr that);
	public Object visit(AssignStmt that);
	public Object visit(StmtBlock that);
	public Object visit(BreakStmt that);
	public Object visit(CallStmt that);
	public Object visit(ContinueStmt that);
	public Object visit(IfStmt that);
	public Object visit(ReturnStmt that);
	public Object visit(VarDeclStmt that);
	public Object visit(WhileStmt that);
	public Object visit(Program that);
	public Object visit(MethodCallStmt that);

}
